package com.msh.artascope.devcloud.service.service;

import com.msh.artascope.devcloud.client.po.ModuleBuildPo;
import com.msh.artascope.devcloud.client.qo.ModuleBuildQo;
import com.msh.artascope.devcloud.service.model.query.ModuleBuildQueryVo;
import com.msh.artascope.devcloud.service.model.vo.BuildLogVo;
import com.msh.artascope.devcloud.service.model.vo.ModuleBuildVo;
import com.msh.frame.client.base.TenantBaseService;
import com.msh.frame.client.common.Result;
import java.util.List;

/**
 * @author shihu
 * @mail m-sh@qq.com
 */
public interface ModuleBuildService extends TenantBaseService<ModuleBuildPo,ModuleBuildQo> {

  ModuleBuildVo build(ModuleBuildVo moduleBuildVo);

  BuildLogVo log(Long buildId, Integer bufferOffset, Long tenantId);

  /**
   * 清除构建num
   *
   * @param moduleBuildQo
   */
  void clearBuildNum(ModuleBuildQo moduleBuildQo);

  /**
   * 更新制品运行状态
   *
   * @param id
   * @param runningFlag
   * @param tenantId
   */
  void updateRunning(Long id, Integer runningFlag, Integer updateVersio, Long tenantId);


  void updateRunning(Long id, Integer runningFlag, Long tenantId);

  /**
   * 清空制品运行状态
   *
   * @param moduleId
   * @param tenantId
   * @param excludeModuleBuildingId 排除
   */
  void clearRunning(Long moduleId, Long tenantId, Long excludeModuleBuildingId);
// ----------前端vo处理-------------------------------------------------------

  /**
   * id查询
   *
   * @param id 主键id
   * @return 查询Vo列表
   */
  ModuleBuildVo getVo(Long id, Long tenantId);

  /**
   * 查询
   * @param q 查询QueryVo
   * @return  查询Vo列表
   */
  List<ModuleBuildVo> listVo(ModuleBuildQueryVo q);

  /**
   * 分页查询
   * @param q 查询QueryVo
   * @return  分页查询Po列表
   */
  Result<List<ModuleBuildVo>> pageVo(ModuleBuildQueryVo q);


}
